(define (p) (p))

(define (test x y)
   (if (= x 0)
       0
       y))

;; Commented out as it would cause infinite recursion
;; (test 0 (p))

;; With applicative order evaluation, the call to p will always be evaluated.
;; Since p only calls itself, this will cause an infinite recursion.
;; With normal order evaluation, the call to p will only be evaluated when/if
;; it is needed. Since p is never necessary inside test, the program would
;; terminate normally.




